package com.andova.component.net

import android.content.Context
import com.andova.NETWORK
import java.lang.ref.WeakReference

interface NetworkSusCallback2<T : ResponseModel> {
    /**
     * 网络请求前回调的接口
     */
    suspend fun prepare(context: WeakReference<Context>)

    /**
     * 网络请求成功，但服务端响应错误信息
     */
    suspend fun error(context: WeakReference<Context>, obj: Any?)

    /**
     * 网络请求成功，并获取到服务端的响应数据
     */
    suspend fun success(context: WeakReference<Context>, respBody: T)

    /**
     * 网络请求成功，服务端进行响应，无论响应数据还是错误信息
     */
    suspend fun response(context: WeakReference<Context>, vararg objects: Any?)

    /**
     * 网络请求出错
     */
    suspend fun failure(context: WeakReference<Context>, throwable: Throwable?, vararg objects: Any?)

    /**
     * 网络请求结束回调的接口，无论响应成功还是失败
     */
    suspend fun complete(context: WeakReference<Context>, @NETWORK code: Int)
}